package com.ctf.soft.ms.service;

import java.util.List;

/**
 * @User 王新禄
 * @Date 2015/10/17
 * @Description
 */
public interface IBaseService<T> {

    /**
     * 方法描述：新增所有，无论属性是否为null
     *
     * @param t 实体对象
     * @return
     * @author jiajl
     */
    public int insert(T t);

    /**
     * 方法描述：新增，属性为null则不保存
     *
     * @param t 实体对象
     * @return
     * @author jiajl
     */
    public int insertSelective(T t);

    /**
     * 方法描述：更新所有，无论属性是否为null
     *
     * @param t 实体对象
     * @return
     * @author jiajl
     */
    public int updateByPrimaryKey(T t);

    /**
     * 方法描述：更新，属性为null则不更新
     *
     * @param t 实体对象
     * @return
     * @author jiajl
     */
    public int updateByPrimaryKeySelective(T t);

    /**
     * 方法描述：删除，根据id删除
     *
     * @param id 主键
     * @return
     * @author jiajl
     */
    public int deleteByPrimaryKey(String id);

    /**
     * 方法描述：删除，根据条件删除
     *
     * @param t 实体对象
     * @return
     * @author jiajl
     */
    public int deleteByEntity(T t);

    /**
     * 方法描述：查询实体对象，根据id查找
     *
     * @param id 主键
     * @return 实体对象
     * @author jiajl
     */
    public T selectByPrimaryKey(String id);

    /**
     * 方法描述：查询实体对象，根据条件查找
     *
     * @param t 实体对象
     * @return 实体对象
     * @author jiajl
     */
    public T selectByEntity(T t);

    /**
     * 方法描述：查询实体集合
     *
     * @return 实体集合
     * @author jiajl
     */
    public List<T> selectByList();

    /**
     * 方法描述：查询实体集合，根据条件查找
     *
     * @param t 实体对象
     * @return 实体集合
     * @author jiajl
     */
    public List<T> selectByList(T t);

    /**
     * 方法描述：查询实体集合，根据条件查找多少条记录
     *
     * @param t     实体对象
     * @param limit 条数
     * @return 实体集合
     * @author jiajl
     */
    public List<T> selectByLimit(T t, int limit);
}
